/*
 提升境界
*/

inherit "inherit/object"

number main(object me,string arg){
    //immortal属性
  // 获取当前修为、境界和阶位
    number currentPot = me.query("pot");    // 当前修为
    number currentRealm = me.query("immortal/lev");  // 当前境界
    number currentRank = me.query("immortal/rank");   // 当前阶位（1-9）

    // 初始化阶位（如果是第一次调用）
    if (currentRank < 1 || currentRank > 9) {
        me.set("immortal/rank", 1);  // 默认从第一阶开始
        currentRank = 1;
    }

    // 检查是否有足够的修为
    if (currentPot < 1) {
        tellObject(me, "想啥呢，一点修为都没有！");
        return 0;
    }

    // 计算本次提升需要消耗的修为
    // 基础消耗为100，每提升一阶（包括境界和阶位），消耗增加50%
    // 总阶数 = 境界*9 + 当前阶位
    number totalStages = currentRealm * 9 + currentRank;
    number cost = 100 * pow(1.5, totalStages - 1);  // 减1是因为第一阶消耗为100

//    // 确保消耗是整数
    cost = toInt(cost);
//
//    // 检查修为是否足够
    if (currentPot < cost) {
        tellObject(me, fmt( "修为不足！提升到下一阶需要%s修为,当前修为%s。",cost,currentPot   )  );
        return 0;
    }

    // 扣除修为
    me.add("pot", -cost);

    // 判断是否需要提升境界
    if (currentRank == 9) {
        // 提升境界，重置阶位为1
        me.add("immortal/lev", 1);
        me.set("immortal/rank", 1);

        number newRealm = currentRealm + 1;
        tellObject(me, "恭喜！你成功突破到了" + newRealm + "重境界一阶！");
    } else {
        // 仅提升阶位
        me.add("immortal/rank", 1);
        number newRank = currentRank + 1;
        tellObject(me, "恭喜！你成功提升到了" + currentRealm + "重境界" + newRank + "阶！");
    }

    tellObject(me, "本次提升消耗了" + cost + "点修为。");
    return 1;

}

